ABAP CDS (Core Data Services),是一個用來定義及存取ABAP語意化資料模型的基礎設施,ABAP用CDS DDL語言來定義 CDS實體,而最重要的CDS實體則是CDS視圖。
CDS視圖具體而言有以下特色:
先來個CDS view的範例:
"CDS視圖實體的Metadata"
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Connection View CDS Data Model'
"參照來源定址"
define view entity /DMO/I_Connection
as select from /dmo/connection as Connection
"添加關聯"
association [1..1] to /DMO/I_Carrier as _Airline
on $projection. AirlineID = _Airline.AirlineID
{
"CDS視圖欄位的Metadata"
@ObjectModel.text.association: Airline'
"視圖欄位"
key Connection.carrier_id as AirlineID,
key Connection.connection_id as ConnectionID, Connection.airport_from_id as DepartureAirport, Connection.airport_to_id as DestinationAirport,
...
_Airline
}
在範例中, DEFINE VIEW ENTITY 後面接的是CDS view名稱/DMO/I_Connection
,FROM之後接的則是資料來源/dmo/connection
。額外的可選項AS
後則是別名Connection
,方便定址資料來源到view內。
添加關聯(association)可以把當前的CDS視圖關連到另一個CDS視圖,範例中增加了一個一對一關聯到/DMO/I_Carrier
這個視圖,並命名為_Airline
把_Airline
加入到element清單中(大括號內),就可進一步在當前視圖使用該關聯。
CDS的語意化註解(entity annotations)使用@作為開頭,並放置在視圖前方,用來更加豐富CDS的語意化定義,主要拿來定義CDS的metadata。另外,CDS註解也能寫在element的大括號之中,用來定義element的metadata。
/dmo/connection
表格,按下ctrl+shift+G,打開下方Search面板Object Type
裡搜尋DDLS/DF
/DMO/I_CONNECTION
,即可進入connection表格的CDS物件/DMO/I_Connection
CDS定義囉1.當開啟CDS後。可以F8開啟該CDS關聯的表格。對表格任一筆右鍵,選擇follow association
2.接著會列出所有與該CDS有關的association,選擇想檢視的關聯即可
3.該筆資料的關聯資訊
DATA airport_from_id TYPE /dmo/airport_from_id.
DATA airport_to_id TYPE /dmo/airport_to_id.
DATA carrier_name TYPE /dmo/carrier_name.
SELECT SINGLE
FROM /dmo/connection
FIELDS airport_from_id, airport_to_id
WHERE carrier_id = @i_carrier_id
AND connection_id = @i_connection_id
INTO ( @airport_from_id, @airport_to_id ).
可以參照上圖的SQL SELECT 語法存取CDS,整體和昨天的SQL語法使用相去不遠。從CDS讀表格跟直接讀取原始表格相比,有以下幾個優點:
明天要介紹ABAP裡的Structured Data!